*       SXアイコンデータをグラフィック画面に表示する
*                                       (複数ファイル指定対応)
*
*               ivl(sx-Icon Viewer --- ordered List expansion)
*
*       v0.01(未完成):                  from May.29,1999.       dummy.x.(with J-S.I.)
*       v0.02(表示高速化、第一次完成):  from Aug. 7,1999.       dummy.x.(with J-S.I.)
*       v0.03(画像サイズの確認 etc.):   from Mar. 9,2000.       dummy.x.(with J-S.I.)
*       v0.03a(電脳倶楽部拡張):         from May.,2000.         電魔団\shoryu
*       v0.04(v0.03 bugfix etc.):       from Jun. 5,2000.       dummy.x.(with J-S.I.)
*       v0.05(サイズでの個数指定 etc.): from Jun.16,2000.       dummy.x.(with J-S.I.)

================
 SXアイコンデータをグラフィック画面につらつらと表示します。

================
 次のようにして使います。

        >ivl [<オプション>] <ファイル名[.PT4]> [<ファイル名>...]

 <ファイル名>には、表示したいSXアイコンデータファイル名を、表示
したい順番で指定します。拡張子を省略すると ".PT4"を補います。
 <ファイル名>にはパス名だけを指定できるようになりました。その場合、
そのパスの *.PT4 を検索します。

 <ファイル名>は複数指定できます。また、それぞれにワイルドカードを
使用できます。
        ex)     >ivl ???3?z q:¥1999¥sxba*
                カレント¥???3?z.PT4 と q:¥1999¥sxba*.PT4 を表示

 <ファイル名>に該当するファイルが存在しなかった時は、単に無視して
次の<ファイル名>に移ります。
 ただし、全ての<ファイル名>が存在しなかった時は、指定ミスです。


 <オプション>には、次のコマンドラインオプションを指定できます。
英文字の大小は無視されます(-a と -A は同じです)。

        -o[<x>][,<y>]
                ...     1画面に表示するアイコン数の指定

                 1画面に横<x>×縦<y>個のアイコンを表示する
                ように指定します。
                 値の範囲と初期値は、:
                        <x>     1〜8 初期値=7
                        <y>     1〜7 初期値=4
                です。

                 ちなみに、表示できるアイコンパターンのサイズは表示
                する数に応じて増/減します。

                 -z オプションとは相容れません。後に指定された方が
                有効です。


        -z[<w>][,<h>]
                ...     アイコン画像サイズの指定

                 <w>×<h>ドットのアイコンを表示できるように、表示
                個数を設定します。
                 値の範囲と初期値は、:
                        <w>     1〜768 初期値=35
                        <h>     1〜494 初期値=38
                です。

                 ちなみに、算出される表示個数は -l オプションの引数
                と同じ範囲内に調整されます。

                 -l オプションとは相容れません。後に指定された方が
                有効です。


        -zx     ...     最大画像サイズを指定

                 -z オプションの特殊版で、指定されたファイルの中で
                最大のアイコンを表示できるように、表示個数を設定し
                ます。

                 このオプションを指定すると、表示までに少し時間が
                かかります。


        -n[k][m][j]
                ...     操作デバイスの限定

                 指定されたデバイスでの操作を無効にします。
                 k を指定するとキーボード、m でマウス、 j でジョイ
                スティックを無効にします。
                 また、文字を付けずに "-n" とだけすると、全デバイス
                での操作を許可します(それまでの指定を無効にする)。

                 文字 k, m, j は一度に複数指定できます(例:-nkm)。
                ただし、全デバイスを無効にすることはできません。


        -f      ...     画像データを先に読み込んでおく

                 指定されたアイコンファイルを、あらかじめメモリ上に
                読み込みます(いわゆる『オンメモリ』)。

                 これを指定すると閲覧中にファイルアクセスしないので、
                アイコンの再表示(表示ページの移動、画面モードの変更
                など)が多少速くなります。
                 その代わり、最初にファイルをまとめて読み込むため、
                起動に時間がかかります。また、ファイル数が1画面に
                収まる場合はあまり意味がありません。


        -pp     ...     アイコン情報だけを表示する

                 ファイルのアイコン情報、すなわち
                        ・ファイル名
                        ・画像サイズ
                        ・ファイルの存在パス名
                を標準出力へ出力して、実行を終了します。

                 アイコンサイズだけを知りたい場合に指定するといい
                でしょう。


        -pz     ...     表示できる個数/画像サイズだけを表示する

                 表示できる個数とアイコン画像の最大サイズを、:
                --------
                ivl: この指定では、横 8×縦 6個・横96×縦66dotを表示できます。
                --------
                のように標準出力へ出力して、実行を終了します。

                 -o,-z の指定によって変化する表示個数と画像サイズを
                確認するのにお使いください。


        -v      ...     進行状況を表示する

                 アイコン表示前の処理状況を簡潔に表示します。
                 多量のファイルを -f オプションで登録すると、表示
                までしばらく時間がかかりますが、これを併用することで
                多少は気が紛れると思います。


        -?      ...     使用法表示

                 プログラムの簡単な使用法を表示します。



 この他に、隠し(ってわけでもないんですが)オプションとして、
インダイレクトファイルでコマンドラインを指定することができます。:

        -+-+-<file>
                ...     インダイレクトファイルの指定

                 インダイレクトファイル <file> の各行をコマンド
                ライン引数として解釈します。
                 <file> 中には、この「インダイレクトファイル指定」
                -+-+- 以外の全てのオプション、および表示ファイル名を
                指定できます。

                例)     # clinearg indirect-file test
                        ; +
                        ; |     行頭に # または ; がある行は
                        ; |     コメント行扱いします
                        ; +
                        -o4,3
                        h:¥graphics¥sxicon¥sleep*
                        m:¥GrTools¥sample.sxi
                        m:¥GrTools¥cnvtools¥*

                 <file> が存在しなかった場合、エラーにはならずに
                そのまま処理を続けます。エラーメッセージも出ません
                のでご注意ください。


================
◇ 操作方法

 キーボード、マウス、ジョイスティック(1のみ)での操作が可能です
(コマンドラインオプション -n で一部を無効にすることもできます。
詳しくはコマンドラインの説明を参照してください)。

 操作          │キーボード    │マウス        │ジョイスティック
━━━━━━━━┿━━━━━━━┿━━━━━━━┿━━━━━━━━
 次画面         │[ROLL UP]     │左ボタン      │Aボタン
                │[XF1]         │              │
                │リターンキー  │              │
 前画面         │[ROLL DOWN]   │右ボタン      │Bボタン
                │[XF2]         │              │
                │[BS]          │              │
 次行           │[↓]          │下移動        │スティック下
                │スペースキー  │              │
 前行           │[↑]          │上移動        │スティック上
 先頭/最後      │[HOME]        │              │
────────┼───────┼───────┼────────
 ファイル名表示 │[O]          │              │
   パス名表示 │[P]          │              │
 画像サイズ表示 │[@]          │              │
────────┼───────┼───────┼────────
   画像色反転 │[N]          │              │
   画像白黒化 │[M]          │              │
 画像を通常表示 │[B]          │              │
────────┼───────┼───────┼────────
 画面を512x512に│[←]          │左移動        │スティック左
 画面を768x512に│[→]          │右移動        │スティック右
────────┼───────┼───────┼────────
  終了          │[ESC]         │左右ボタン同時│ABボタン同時
画面そのまま終了│[Q]          │              │
────────┴───────┴───────┴────────


 「先頭/最後」は、
        最初の画面から          最後の画面へ
        最初以外の画面から      最初の画面へ
のように表示位置を移動します。


 「画像色反転」は、アイコン画像を色反転して表示します。
 「画像白黒に」は、アイコン画像を白黒化して表示します(パターンエディタ.X
とは異なった変換を行ないます。詳しくは後述の『注意点』の項目をご覧
ください)。
 この二つを組み合わせて“色反転して白黒化”というのも可能です。

 表示を変更している時にもう一度同じ操作をすると、その変更を戻します
(トグル動作)。
 また、「画像を通常表示」の操作をすることで、通常の表示に強制的に
戻せます。


 「画面そのまま終了」とは、終了時に画面をそのまま残してプログラムを
終了するものです。
 表示したものをグラフィックデータとして保存する場合などにご活用くだ
さい。

 通常の「終了」では、画面を起動前に戻しますが、この場合でも [SHIFT]
キーを押していれば画面をそのまま残します。


================
◇ IV.X との差異(ivl で追加した機能は除く)

 これまでに作者が気づいているのは以下のものです。:

・表示位置の違い
         IV.X は画面の中央に寄せた位置から表示を始めますが、ivl は
        画面一杯を使って表示します。
         このため、画面の上際に表示されるアイコンが若干見づらく
        なっています。

 これら以外にも、作者が気づいていないものがあるかも知れません。


================
◇ 注意点

・同じファイルを2回以上指定した場合、表示は1回だけ行なわれます
(v0.02 以降)。
 この「同じファイル」判定は仮想ドライブ/ディレクトリに対しても
行ないます。
        ex)     >subst u: h:¥sxicon
                >ivl h:¥sxicon¥foo u:foo
                この場合、foo.PT4 は1回しか表示されない


・表示するのは、パス名を取り除いたファイル名とそのアイコン画像です。
 「パス名を取り除く」ため、同名のファイルが別々に存在していた場合、
画面表示だけでは区別できません。

        ex)     >ivl bar backup¥bar
                この場合、画面ではどちらも "bar.pt4" として表示

 ただし、v0.03 以降では表示情報としてパス名も表示させられるように
なりました(詳しくは『操作方法』の項目を参照)。


・ファイル名やパス名が長すぎて、横の表示範囲に収まらない場合、後ろを
切り詰めます(v0.05 以降)。

 切り詰められた時は、表示の最後に '>' が付加されます。:
        ex)     表示字数=8,ファイル名="foobar.pt4"
                        ... "foobar.>" と表示される

 '>' の直前に '・' がある時は、ちょうど漢字の途中で切り詰められた
ことを示します。:
        ex)     表示字数=8,ファイル名="漢字の時.pt4"
                        ... "漢字の.>" と表示される


・(v0.05)隠し機能です。
 -z および -zx オプションの z を大文字にすると、表示個数の上限判定
をしません。:
                      ↓
        ex)     > ivl -z35,38 -pz
                ivl: この指定では、横 8×縦 7個・横96×縦54dotを表示できます。
                      ↓             ↑    ↑      ↑    ↑
                > ivl -Z35,38 -pz
                ivl: この指定では、横21×縦 9個・横36×縦38dotを表示できます。
                                     ↑    ↑      ↑    ↑

 このように(サイズによっては)1画面にとんでもない数を表示すること
が可能です。
 ただし表示個数が大きすぎると、次のような問題が発生します。:

        ・ファイル名やパス名は、まず切り詰められます。また、アイコン
        サイズすらも切り詰められるかも知れません。

        ・アイコン画像の代わりに表示されるエラーメッセージが、左右や
        下に重なって表示されるため、かなり見にくくなります。

 以上の問題を十分に把握した上で、ご利用ください。


・(v0.05)色反転表示している時は、ファイル名やエラーメッセージなどが
白文字で表示されます。これはまぁ、仕様ってコトで、よろしく。


・(v0.05)ivl の白黒表示と パターンエディタ.X の『白黒登録』とは、赤・緑
の扱いが異なっています。
 パターンエディタ では赤をライトグレー、緑をダークグレーに変換しますが、
ivl は逆に赤をダークグレー、緑をライトグレーに変換します。

 色の明るさから単純に考えても、パターンエディタ は圧倒的に変です。まぁ、
単純にビット落ちで変換してるからなんでしょうが…。
 もっともこれでは変換結果の確認という使い方はできないわけで、不評
ならば パターンエディタ に合わせます(後々この仕様による白黒変換ツールを
作るつもりですが…)。


・グラフィック画面をRAMディスクなどで使っていても、問答無用で破壊
します。


================
◇ 謝辞

 このプログラムは以下の書籍・文書、ソフトウェアを参考・使用
して作成致しました(敬称は略させていただきます)。


IV.X v1.20、およびそのソースファイル    (「電脳倶楽部」53号掲載)
                        内瀬優 / 頼藤凌

ivl.x v0.03a のソースファイル           (「電脳倶楽部」146号掲載)
                        origin:dummy.x. / +feature:電魔団\shoryu

X68k Programing Series.
                #1      <develop>
                        吉野智興 / 中村祐一 / 石丸敏弘 / 今野幸義
                #2      <libc>
                        村上敬一郎 / 荻野祐二 / 大西恵司

ED.R v0.99XI            RANN
GNU C compiler version 1.30 Tool#2(X680x0) Based on 1.42
                        Free Software Foundation / 真里子
HAS060 v3.09+78         Y.Nakamura/M.Kamada
HLK v3.01               SALT
GNU make v3.62(X6_15)   Free Software Foundation / homy

libc 1.1.32             Project LIBC Group


 制作者、著作者の方々に感謝致します。


================
◇ 著作権とか

 このプログラムはフリーウェアです。

 著作権は作者である dummy.x. およびその所属サークル J-SAGA INDUSTRY
(J-S.I/JSI)にあります。

 第三者のプログラムの使用/改造/解析などを、著作権者は制限しません。
 ただし、改造版を配布する際には、何らかの形で「改造した」ことを明記
してください(オリジナルの添付は不要です)。

 このプログラムを実行した結果被ったあらゆる損害に対し、著作権者は
一切の責任を負わないものとします。ご自分の責任においてお使いください。

 バグなどを発見した場合、できる限り対処したいとは思っていますので、
何とか伝えてください。


================
バージョン履歴:

v0.01:  from May.29,1999.       dummy.x.(with J-S.I.)
         アイコン投稿者の責任として、取敢えず作成。
         最低限の表示機能を実装。

v0.02:  from Aug. 7,1999.       dummy.x.(with J-S.I.)
         憧れの「いかにもアセンブラなコード」による .PT4 画像表示
        処理を作成、表示を高速化する。第1次完成。

v0.03:  from Mar. 9,2000.       dummy.x.(with J-S.I.)
        ・アイコンサイズおよびパス名への表示切替機能を追加。
         ついでにそういう情報のみを表示するモードも追加作成する。
        ・アイコンデータの先行読み込み処理を追加。
        ・1画面のアイコン表示数を、横7×縦4から、横8×縦7に
        増やす。

v0.03a: from May.,2000.         電魔団\shoryu
        ・終了時に [SHIFT] を押していると画面モードを戻さないように
        する(電脳倶楽部編集部仕様)。

v0.04:  from Jun. 5,2000.       dummy.x.(with J-S.I.)
        ・-f オプション指定時に、.PT4 ではないファイルを読み込むと
        バスエラーを起こしていたのを修正。
        ・-pp オプションで、ファイル読み込みに使ったメモリを解放し
        忘れてたのを修正。
        ・-p オプション、あんまり意味がないので削除。
        ・-px オプションを追加。
        ・「ファイル名」「パス名」「画像サイズ」の表示を直接指示する
        キー操作を追加。これに伴い、「情報の切替」操作を削除。
        ・画面右下の個数表示を、画像サイズ表示中に限り「表示可能な
        最大画像サイズ」に変えてみた(テスト:反論あれば戻します)。

v0.05:  from Jun.16,2000.       dummy.x.(with J-S.I.)
        ・ファイル名/パス名/アイコンサイズを、横の表示幅に応じて切り
        詰める(req:佐俣氏)。加えてこれを解除する -x (隠しオプション)を
        追加。
        ・-z, -zx オプションを追加。
        ・<ファイル名> にサブディレクトリ名だけを指定できるように
        した。
        ・-px オプションを -pz に呼称変更、表示メッセージもちょっと
        変更。
        ・-v オプションを追加。
        ・次の時に表示される「表示可能な画像サイズ」の縦幅が、実際の
        値より大きくなっていたのを修正。:
                > -pz オプションで表示されるサイズ
                > 画面右下の「表示可能な最大画像サイズ」
                                        (アイコンサイズ表示中のみ)
        ・画面縦方向の表示幅をほんの少し拡大。
        ・v0.03a での“終了時に [SHIFT] を押していると画面モードを
        戻さない”機能をこっちでも組み込む。
         さらに、「画面モードを戻さない終了」操作も追加。
        ・色反転/白黒表示処理を追加。


================
雑記:

 以前から考えていた「サイズでの表示個数の指定」処理を組み込もうと
作業を始めた矢先に、

        -pz での表示サイズがおかしい

という問題を発見してしまいました。

 でもこのとき、既に v0,04 を電クラへの最終投稿として送っていたの
です。
        「どうしようかなぁ・・・・間に合うもんなら間に合わせたいけど…」

とか考えながら修正/機能追加を行なっていたとき、電クラ146号が届き
ました。

 “最終締切は6月末…”だそうです。

        「よっし、間に合わせよう!電クラ仕様も取り込んじゃえ!」

というわけで、何とかまとめました。

 ・・・・前回のが、最終投稿のつもりだったのになぁ・・・・カッコわりぃ〜。
 ・・・・今回のが、最終投稿になればいいなぁ・・・・アハハ;;;。

--------

 -z オプションの標準値の“35×38”は、SX標準の汎用ファイル
アイコン(無地の紙束)のサイズです。
 何の根拠もなしにつけた値ではないので、一応念のため。

--------

 今バージョンで、表示ツールとして「あったらいいな」という機能は概ね
実装できたと思っています。

 私がもうひとつ付けたいのが「ディレクトリの再帰探索」です。あると
便利ですからね。

--------
 それでは、また。

================
did so many die just to see him fly.

[End Of Document]